package main

import (
	"context"
	"github.com/asim/go-micro/plugins/registry/mdns/v3"
	"github.com/asim/go-micro/v3/registry"
	"github.com/asim/go-micro/v3/server"
	"main/handler"
	"time"
)

const (
	ServerName = "go.micro.registry.mdns"
)

func main() {
	// 创建registry
	// github.com/asim/go-micro/v3/registry/mdns_registry.go:167
	mdnsRegistry := mdns.NewRegistry(
		// 第一种配置方式
		registry.Timeout(time.Millisecond * 100),
		// 第二种配置方式
		func(options *registry.Options) {
			options.Context = context.WithValue(
				context.Background(),
				"mdns.domain",
				"micros",
			)
		},
	)

	// 指定name,创建rpc-server,且指定注册中心 mdns
	rpcServer := server.NewServer(
		server.Name(ServerName),
		server.Registry(mdnsRegistry),
	)

	// 创建并指定handler
	err := rpcServer.Handle(
		rpcServer.NewHandler(new(handler.User)),
	)
	if err != nil {
		panic(err)
	}

	// 运行
	if err := rpcServer.Start(); err != nil {
		panic(err)
	}
	select {
	}
}
